home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Your Apple Games Gallery 1
/
Your Apple Games Gallery (Side A)(MicroSPARC, Inc.)(1988).do
/
SURPRISE.ATTACK.bas
< prev
next >
Wrap
BASIC Source File
|
2021-12-11
|
7KB
|
241 lines
10 REM **********************
20 REM *SURPRISE.ATTACK *
30 REM *BY JEFF G. COX *
40 REM *COPYRIGHT (C) 1987 *
50 REM *BY MICROSPARC, INC. *
60 REM *CONCORD, MA 01742 *
70 REM **********************
80 REM * INITIALIZE GAME OPTIONS
90 AS = PEEK(768)
100 BS = PEEK(769)
110 BKEYS$ = "ASD": REM LEFT, CENTER, RIGHT
120 DS = PEEK(770)
130 FS = PEEK(771)
140 PS = PEEK(772)
150 TS = PEEK(773)
160 TKEYS$ = "OK.;L": REM UP, LEFT, DOWN, RIGHT, STOP
170 XS = PEEK(774)
180 YS = PEEK(775)
190 REM * INITIALIZE SAFAST INTERFACE
200 CD$ = CHR$(4): REM CONTROL-D
210 START% = 16384: REM MACHINE CODE STARTS AT $4000
220 PRINT CD$;"BLOAD SAFAST,A";START%
230 POKE START% +81,AS
240 LBN% = START% +83: REM BASE ARRAY LOCATION
250 POKE START% +87,BS
260 FOR I = 1 TO 3
270 POKE START% +88 +I,128 + ASC( MID$ (BKEYS$,I,I))
280 NEXT I
290 LCN% = START% +92: REM CITY ARRAY LOCATION
300 LDS% = START% +99: REM DIFFICULTY LOCATION
310 LERR% = START% +100: REM ERROR LOCATION
320 POKE LERR%,0
330 POKE START% +101,FS
340 FOR I = 1 TO 5
350 POKE START% +104 +I,128 + ASC( MID$ (TKEYS$,I,I))
360 NEXT I
370 POKE START% +110,TS
380 POKE START% +114,XS
390 LXSP% = START% +115: REM MISSILE X SPEED LOCATION
400 POKE START% +121,YS
410 LYSP% = START% +122: REM MISSILE Y SPEED LOCATION
420 LSHPE% = START% +140: REM SHAPE TABLE LOCATION
430 REM * INITIALIZE COLORS AND SHAPES
440 BLACK = 0
450 LIME = 1
460 WHITE = 3
470 CITY = 1
480 MISSILE = 2
490 HBYTE = INT(LSHPE%/256): REM HIGH BYTE
500 LBYTE = LSHPE% -HBYTE *256: REM LOW BYTE
510 POKE 232,LBYTE: POKE 233,HBYTE
520 REM * INITIALIZE REST
530 SPKR = -16336: REM APPLE SPEAKER
540 GOSUB 2170
550 REM * RETURN HERE FOR EACH PLAY
560 REM * RESET VARIABLES FIRST
570 POKE LBN% +1,10: REM # OF MISSILES AT BASE 1,
580 POKE LBN% +2,10: REM BASE 2, AND
590 POKE LBN% +3,10: REM BASE 3; <0 IF DESTROYED
600 POKE LCN% +0,6: REM NUMBER OF CITIES LEFT
610 FOR J = 1 TO 6
620 POKE LCN% +J,1: REM CITY #J IS OK IF 1, DESTROYED IF 0
630 NEXT J
640 DA = DS: REM ADJUSTABLE DIFFICULTY FACTOR
650 POKE LDS%,DA
660 SCRE = 0: REM TOTAL SCORE
670 EXTRA = 500 *DA: REM SCORE REQUIRED FOR EXTRA CITY IN ARCADE MODE
680 ALARM = 1: REM ALARM FLAG
690 ERR = 0
700 REM * DRAW LANDSCAPE
710 TEXT : HOME : HGR
720 ROT= 0
730 SCALE= 1
740 HCOLOR= LIME
750 FOR YA = 159 TO 149 STEP -1
760 HPLOT 0,YA TO 279,YA
770 NEXT YA
780 REM * DRAW CITIES
790 HCOLOR= WHITE
800 YA = 148
810 FOR I = 1 TO 6
820 XA = 31 *I
830 IF I >3 THEN XA = XA +31
840 IF PEEK(LCN% +I) >0 THEN DRAW CITY AT XA,YA
850 NEXT I
860 REM * DRAW BASE AND MISSILES
870 FOR I = 1 TO 3
880 IF PEEK(LBN% +I) <0 THEN 950
890 HCOLOR= BLACK
900 XA = 124 *I -122
910 FOR YA = 150 TO 158
920 HPLOT XA,YA TO XA +28,YA
930 NEXT YA
940 GOSUB 1950: REM * DRAW MISSILES
950 NEXT I
960 REM * TIME TO WAKE UP
970 IF ALARM < >1 THEN 1050
980 ALARM = 0
990 VTAB 21
1000 FLASH : PRINT "RED ALERT";: NORMAL
1010 PRINT ": ENEMY MISSILES APPROACHING."
1020 PRINT "ACTIVATE DEFENSES. PREPARE TO ATTACK."
1030 GOSUB 2090: REM * SOUND ALARM
1040 REM * OPEN MISSILE DOORS
1050 FOR I = 1 TO 3
1060 IF PEEK(LBN% +I) <0 THEN 1150
1070 XA = 124 *I -122
1080 FOR X = 1 TO 5
1090 HCOLOR= BLACK
1100 HPLOT XA +X,149
1110 HCOLOR= LIME
1120 HPLOT XA +X +6,148
1130 FOR J = 1 TO 100: NEXT J
1140 NEXT X
1150 NEXT I
1160 HOME
1170 REM * INITIALIZE FRAME VARIABLES
1180 POKE LXSP%,9 *DA +10: REM ICBM X SPEED LOW BYTE
1190 POKE LXSP% +1,0: REM AND HIGH BYTE
1200 POKE LXSP% +2,150: REM INTERCEPTOR X SPEED LOW BYTE
1210 POKE LXSP% +3,0: REM AND HIGH BYTE
1220 POKE LYSP%,9 *DA +10: REM ICBM Y SPEED LOW BYTE
1230 POKE LYSP% +1,0: REM AND HIGH BYTE
1240 POKE LYSP% +2,150: REM INTERCEPTOR Y SPEED LOW BYTE
1250 POKE LYSP% +3,0: REM AND HIGH BYTE
1260 REM * TIME TO GO DO IT!
1270 CALL START%
1280 IF PEEK(LERR%) < >0 THEN 1760
1290 IF PEEK(LCN%) <1 THEN 1830
1300 REM * CALCULATE SCORE
1310 FOR I = 1 TO 3
1320 BNI = PEEK(LBN% +1)
1330 IF BNI >0 AND BNI < = 10 THEN SCRE = SCRE +BNI *DA
1340 NEXT I
1350 IF PEEK(LCN%) >0 THEN SCRE = SCRE + PEEK(LCN%) *(50 +50 *AS)
1360 REM * BUMP UP DIFFICULTY
1370 DA = DA +1: IF DA >9 THEN DA = 9
1380 POKE LDS%,DA
1390 IF AS < >0 THEN 1640
1400 REM * DISPLAY SCORE IN ARCADE MODE
1410 HOME
1420 VTAB 21
1430 PRINT "YOUR SCORE IS NOW ";SCRE
1440 IF EXTRA >SCRE THEN 1540
1450 REM * ADD A BONUS CITY
1460 EXTRA = EXTRA +500 *DA
1470 FOR I = 1 TO 6
1480 IF PEEK(LCN% +I) >0 THEN 1530
1490 POKE LCN% +I,1
1500 POKE LCN%, PEEK(LCN%) +1
1510 I = 6
1520 PRINT "PLUS, YOU RECEIVE A BONUS CITY!"
1530 NEXT I
1540 IF PS = 0 THEN FOR I = 1 TO 500: NEXT I: GOTO 1590
1550 POKE -16368,0: REM IGNORE PREVIOUS KEYPRESSES
1560 PRINT "PRESS RETURN TO CONTINUE ";
1570 GET KEY$
1580 REM * RESUPPLY BASES
1590 POKE LBN% +1,10
1600 POKE LBN% +2,10
1610 POKE LBN% +3,10
1620 GOTO 710
1630 REM * RESUPPLY BASES FOR CONTINUOUS MODE
1640 ADD = (13 -DA)/2
1650 FOR I = 1 TO 3
1660 BNI = PEEK(LBN% +I)
1670 IF BNI <0 OR BNI > = 10 THEN 1730
1680 IF PEEK(LCN% +2 *I -1) >0 THEN BNI = BNI +ADD
1690 IF PEEK(LCN% +2 *I) >0 THEN BNI = BNI +ADD
1700 IF BNI >10 THEN BNI = 10
1710 POKE LBN% +I,BNI
1720 GOSUB 1950: REM * DRAW MISSILES
1730 NEXT I
1740 GOTO 1180
1750 REM * HANDLE ERROR MESSAGES
1760 ERR = PEEK(LERR%): REM ERROR NUMBER
1770 TEXT
1780 HOME
1790 PRINT "PROGRAM ABORTED DUE TO FATAL ERROR: ";ERR
1800 GOSUB 2090: REM SOUND ALARM
1810 END
1820 REM * DISPLAY FINAL SCORE
1830 VTAB 21
1840 PRINT "YOUR FINAL SCORE IS ";SCRE
1850 REM * PLAY AGAIN?
1860 PRINT
1870 INPUT "PLAY AGAIN (Y/N)? ";INPT$
1880 IF INPT$ < >"Y" AND INPT$ < >"N" THEN 1830
1890 IF INPT$ = "Y" THEN 570
1900 PRINT
1910 TEXT : HOME
1920 END
1930 REM * HERE ARE THE UTILITY ROUTINES
1940 REM * DRAW MISSILES FOR BASE I
1950 IF PEEK(LBN% +I) <1 THEN 2050
1960 HCOLOR= WHITE
1970 ROT= 0
1980 SCALE= 1
1990 XA = 124 *I -119:YA = 152
2000 RESTORE
2010 FOR J = 1 TO PEEK(LBN% +I)
2020 READ X,Y
2030 DRAW MISSILE AT XA +X,YA +Y
2040 NEXT J
2050 RETURN
2060 DATA 0,0,5,0,10,0,15,0,20,0: REM ROW 1
2070 DATA 0,4,5,4,10,4,15,4,20,4: REM ROW 2
2080 REM * SOUND ALARM
2090 FOR I = 1 TO 4
2100 FOR J = 1 TO 20
2110 A = PEEK(SPKR) + PEEK(SPKR) + PEEK(SPKR)
2120 NEXT J
2130 FOR J = 1 TO 50: NEXT J
2140 NEXT I
2150 RETURN
2160 REM * INTRODUCTORY DISPLAY
2170 GOSUB 2090
2180 TEXT : HOME
2190 PRINT "** ALERT ** ALERT ** ALERT ** ALERT **"
2200 PRINT
2210 PRINT "FROM: NORAD WARNING CENTER"
2220 PRINT "TO : REGIONAL ABM COMMANDERS"
2230 PRINT
2240 PRINT "WE HAVE CONFIRMED REPORTS THAT A"
2250 PRINT "NUMBER OF ENEMY NUCLEAR MISSILES"
2260 PRINT "ARE APPROACHING THE CONTINENTAL U.S."
2270 PRINT "INTELLIGENCE INDICATES A STEADILY"
2280 PRINT "INCREASING ATTACK WITH SINGLE ICBM'S,"
2290 PRINT "MULTIPLE ICBM'S, AND MANEUVERABLE"
2300 PRINT "CRUISE MISSILES. THE PRESIDENT HAS"
2310 PRINT "DECLARED DEFCON 4 (GENERAL WAR)."
2320 PRINT "ACTIVATE YOUR REGIONAL ABM DEFENSES."
2330 PRINT
2340 PRINT "GOOD LUCK, YOUR COUNTRYMEN ARE"
2350 PRINT "DEPENDING ON YOU."
2360 PRINT
2370 POKE -16368,0
2380 PRINT "ACKNOWLEDGE RECEIPT OF MESSAGE BY"
2390 PRINT "PRESSING RETURN...";
2400 GET KEY$
2410 RETURN